Conventional flash based caching implementations have a uniform way of handling cached information. A certain amount of I/O requests issued on data blocks in a defined spatial locality within a specified amount of time (or I/Os) makes them “hot”. The “hot” data is then cached on flash devices (such as SSDs), henceforth also termed Cache Devices. The corresponding cache is first made valid by reading the data blocks on the backend disk/VD, where VD stands for “Virtual Device”. The terms “backend disk” and VD shall henceforth be used interchangeably. Once the cache is valid, corresponding I/O reads are fetched from the cache device. All I/O writes are directly written only to the cache device and not written to the backend disk in a caching mode called Write-Back (WB) whereas they are written both to the cache device and the VD in a caching mode called Write-Through (WT). Hot data is tracked via a “heat index”. When data that is hot is no longer accessed as frequently when compared to other data (that may have become “hotter”), the “heat index” is reduced. Once the heat index is sufficiently low and there is not enough room for other data that has a higher “heat index”, the cache gets replaced with ‘hotter’ data.